Next: 2.3 Render Service Arbitration
Up: 2 Justification
Previous: 2.1 Render Service Applications
A render service needs a rendering model and protocol to communicate
rendering requests. OpenGL [10] is a widely adopted
programming interface for high-performance, interactive 3D graphics.
The OpenGL graphics system has features that make it well suited
for use as the underlying rendering model and protocol of a render
service:
- OpenGL's X Window System extension known as GLX [4] already
provides a standard, inter-operable protocol for issuing
OpenGL rendering commands.
- OpenGL is window system independent, making it possible to
specify a window system independent render service programming
interface.
- OpenGL has existing extensions (with associated GLX protocol) for
advanced rendering capabilities like multisampling and 3D textures,
as well as image processing support for operations like convolutions
and histograms.
- OpenGL is widely available and is an accepted standard with existing,
well-tuned high-end implementations. Low-end support for OpenGL makes
possible hybrid rendering schemes combining local OpenGL rendering
results with render service usage.
- OpenGL cleanly separates rendering state from frame
buffer state.
- OpenGL is amendable to hardware acceleration [7].
- OpenGL display lists and texture objects
allow
caching server-side command sequences and textures, reducing
transport overhead during rendering.
The GLR render service uses OpenGL's programming interface so
access to the graphics hardware can be shared by various
clients requesting high-performance rendering. The programming
interface and implementation of GLR are discussed in Section 4.
Using GLR, multiple clients on a network
(including clients running on the same machine that provides the render
service) can share a single, expensive graphics subsystem for their
sophisticated rendering needs.
Typically, a GLR client renders a scene using OpenGL commands, then
retrieves the rendered image from the frame buffer using OpenGL's
glReadPixels. The retrieved image can then be displayed on a low-end
workstation's screen, saved to a file, directed to a printer, or
otherwise manipulated.
Next: 2.3 Render Service Arbitration
Up: 2 Justification
Previous: 2.1 Render Service Applications
Mark Kilgard
Fri Jan 5 18:13:30 PST 1996